/**
 * 
 */
var common_data = new Object;
common_data.page = 1;
common_data.line_per_page = 10;
common_data.order = "DESC";
common_data.order_column = "";
var total_row = 0;
/**
 * Thêm ký hiệu sắp xếp
 */
$(document).ready(function() {
	$(".date_picker").datepicker({dateFormat: 'yy-mm-dd'});
	$(".table > thead > tr > th > a").click(function(){
		$(".icon-circle-arrow-up").remove();
		$(".icon-circle-arrow-down").remove();
		if (common_data.order == "ASC") {
				$(this).after('<i class = "icon-circle-arrow-down right"></i>');
		} else {
				$(this).after('<i class = "icon-circle-arrow-up right"></i>');
		}
	});
});
/**
 * Thay đổi số trang hiện tại
 * @param new_page
 */
function change_page(new_page){
	change_data('page', new_page);
}
/**
 * Thay đổi số dòng hiển thị trên một trang
 * @param new_line
 */
function change_line(new_line){
	common_data.line_per_page = new_line;
	var max_page = Math.ceil(total_row/common_data.line_per_page);
	if (common_data.page > max_page) {
		common_data.page = max_page;
	}
}
function change_data(column,value){
	common_data[column] = value;
}
/**
 * Thay đổi trường sắp xếp
 * @param new_order
 */
function change_order(new_order){
	if (common_data.order_column == new_order) {
		if (common_data.order == "ASC") {
			common_data.order = "DESC";
		}else{
			common_data.order = "ASC";
		}
	}else{
		common_data.order_column = new_order;
		common_data.order = "DESC";
	}
}
/**
 * Gán giá trị số dòng tối đa
 * @param row
 */
function set_total_row(row) {
	total_row = row;
}
/**
 * Load phân trang
 */
function paging(id,url){
	var line_per_page_string = '<div class = "left input-prepend">' +
									'<span class = "add-on">Số dòng hiển thị</span>' + 
									'<select id="line_per_page" name="line_per_page" onchange = change_line(this.value);refreshTable("' + id + '","' + url + '");>' +
									    '<option label="10" value="10">10</option>' +
									    '<option label="20" value="20">20</option>' +
									    '<option label="50" value="50">50</option>' +
									    '<option label="100" value="100">100</option>' +
								    '</select></div>';
	if (Number(total_row) > Number(common_data.line_per_page)) {
		var max_page = Math.ceil(total_row/common_data.line_per_page);
		var str = "<ul>";
		if (common_data.page > 2) {
			str += "<li><a href='#' onclick = change_page(1);refreshTable('" + id + "','" + url + "')>First</a></li>";
			str += "<li><a href='#' onclick = change_page(" + (common_data.page - 1) + ");refreshTable('" + id + "','" + url + "')>Prev</a></li>";
			str += "<li><a href='#' onclick = change_page(" + (common_data.page - 2) + ");refreshTable('" + id + "','" + url + "')>" + (common_data.page - 2) + "</a></li>";
			str += "<li><a href='#' onclick = change_page(" + (common_data.page - 1) + ");refreshTable('" + id + "','" + url + "')>" + (common_data.page - 1) + "</a></li>";
		}else if (common_data.page > 1) {
			str += "<li><a href='#' onclick = change_page(1);refreshTable('" + id + "','" + url + "')>First</a></li>";
			str += "<li><a href='#' onclick = change_page(" + (common_data.page - 1) + ");refreshTable('" + id + "','" + url + "')>Prev</a></li>";
			str += "<li><a href='#' onclick = change_page(" + (common_data.page - 1) + ");refreshTable('" + id + "','" + url + "')>" + (common_data.page - 1) + "</a></li>";
		}else{
			str += "<li class='disabled'><a href='#'>First</a></li>";
			str += "<li class='disabled'><a href='#'>Prev</a></li>";
		}
		str += "<li class='active'><a href='#'>" + common_data.page + " / " + max_page + "</a></li>";
		if (common_data.page + 1 < max_page) {
			str += "<li><a href='#' onclick = change_page(" + (common_data.page + 1) + ");refreshTable('" + id + "','" + url + "')>" + (common_data.page + 1) + "</a></li>";
			str += "<li><a href='#' onclick = change_page(" + (common_data.page + 2) + ");refreshTable('" + id + "','" + url + "')>" + (common_data.page + 2) + "</a></li>";
			str += "<li><a href='#' onclick = change_page(" + (common_data.page + 1) + ");refreshTable('" + id + "','" + url + "')>Next</a></li>";
			str += "<li><a href='#' onclick = change_page(" + max_page + ");refreshTable('" + id + "','" + url + "')>Last</a></li>";
		}else if (common_data.page < max_page) {
			str += "<li><a href='#' onclick = change_page(" + (common_data.page + 1) + ");refreshTable('" + id + "','" + url + "')>" + (common_data.page + 1) + "</a></li>";
			str += "<li><a href='#' onclick = change_page(" + (common_data.page + 1) + ");refreshTable('" + id + "','" + url + "')>Next</a></li>";
			str += "<li><a href='#' onclick = change_page(" + max_page + ");refreshTable('" + id + "','" + url + "')>Last</a></li>";
		}else{
			str += "<li class='disabled'><a href='#'>Next</a></li>";
			str += "<li class='disabled'><a href='#'>Last</a></li>";
		}
		str += "</ul>";
		$(".pagination").html(line_per_page_string + str);
	}else{
		$(".pagination").html(line_per_page_string);
	}
	$("#line_per_page").val(common_data.line_per_page);
}
/**
 * Load nội dung vào bảng
 * @param id id của thẻ html sẽ load nội dung
 * @param url url load Ajax
 */
function refreshTable(id,url){    
	$.ajax({
		  url: url,
		  type: "POST",
//		  data: {'page':page,'line_per_page':line_per_page,'order':order,'order_column' : order_column},
		  data: common_data,
		  beforeSend : function() {
			showLoading();
		  },
		  success: function(data) {
			  $('#' + id).html(data);
		  },
		  complete: function(){	
			  paging(id,url);
			  hiddenLoading();
		  },
		  error: function() {
			  $("#error-dialog").html('Có lỗi khi load dữ liệu từ server. Bạn vui lòng thử lại sau');
              $("#error-dialog").removeClass('hidden');
			  $("#error-dialog").dialog({
					resizable: false,
					height:140,
					modal: true
				});
		  }
	});
}